/*******************************************************************************
 * Copyright (c) 2011-2012 TXT e-solutions SpA
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * This work was performed within the IoT_at_Work Project
 * and partially funded by the European Commission's
 * 7th Framework Programme under the research area ICT-2009.1.3
 * Internet of Things and enterprise environments.
 *
 *
 * Authors:
 *     Cristoforo Seccia (TXT e-solutions SpA)
 *
 * Contributors:
 *      Domenico Rotondi (TXT e-solutions SpA)
 *******************************************************************************/
package it.txt.access.capability.commons.identifier;

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import org.bouncycastle.util.encoders.Hex;


/**
 *
 * @author Cristoforo Seccia (TXT e-solutions SpA)
 */
public class SecureRandomIdentifierGenerator {

     /** Random number generator. */
    private static SecureRandom random ;

    /**
     * Constructor.
     *
     * @throws NoSuchAlgorithmException thrown if the SHA1PRNG algorithm is not supported by the JVM
     */
    public SecureRandomIdentifierGenerator() throws NoSuchAlgorithmException {
        random = SecureRandom.getInstance("SHA1PRNG");
    }

    public String generateIdentifier() {
        return generateIdentifier(16);
    }

    public String generateIdentifier(int size) {
        byte[] buf = new byte[size];
        random.nextBytes(buf);
        return "_".concat(new String(Hex.encode(buf)));
    }

}
